
	import java.io.File;
	import java.io.FilenameFilter;
	import java.util.ArrayList;
	import java.util.Arrays;
	import java.util.List;

	/**
	 * @Auther: 我爱双面奶
	 * @Date: 2018/7/17 07:10
	 * @Description: 递归获取当前目录所有.java文件
	 */
	public class GetAllFile {

		private List<String> fileList = new ArrayList<>();

		/**
		 * 定义过滤规则
		 */
		private class MyFileFilter implements FilenameFilter{
			@Override
			public boolean accept(File dir, String name) {
				File file = new File(dir,name);
				if (file.isDirectory()){
					String [] files = file.list(new MyFileFilter());
					if(files!=null) {
						Arrays.stream(files).forEach(x->fileList.add(x));
					}
				}

				return name.endsWith(".java");
			}
		}

		/**
		 * 取得该目录下所有.java文件
		 * @param fileDir 文件目录
		 * @return 返回.java文件
		 */
		public  List<String> getAllFileBaseFilter(String fileDir){
			File file = new File(fileDir);
			String [] files =  file.list(new MyFileFilter());
			if(files!=null) {
				Arrays.stream(files).forEach(x->fileList.add(x));
			}
			return fileList;
		}

		/**
		 * 取得该目录下所有文件和目录
		 * @param fileDir 文件目录
		 * @return 返回.java文件
		 */
		public List<String> getAllFile(String fileDir){
			File file = new File(fileDir);
			String [] files =  file.list();
			if(files!=null) {
				Arrays.stream(files).forEach(x->fileList.add(x));
			}
			return fileList;
		}

		public static void main(String[] args) {
			GetAllFile getAllFile = new GetAllFile();
			List<String> allFile = getAllFile.getAllFileBaseFilter("d:");
			allFile.stream().forEach(s -> System.out.println(s));

		}
	}
